package wtp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;

import wtp.SAktiehuisStub.BestelResponse;
import wtp.SAktiehuisStub.BestellingProducten;
import wtp.SAktiehuisStub.*;

public class SAktiehuisClient {

	public static void main(String[] args) {
		try {

			SAktiehuisStub stub = new SAktiehuisStub();

			GetProductenLijst       gpl = new GetProductenLijst();
			NieuweBestelling        nb = new NieuweBestelling();
			Bestel                          b = new Bestel();
			GetBestelOverzicht      gbo = new GetBestelOverzicht();
			BevestigBestelling  bb = new BevestigBestelling();

			printMenu();
			String input = readLine();
			while(!input.equals("exit")){
				clearConsole();
				try{
					int menuKeuze = Integer.parseInt( input);
					switch(menuKeuze){
					case 1 :
						System.out.println("Typ een soort in, bij leeg: Alles terug");
						input = readLine();
						gpl.setSoort(input);
						GetProductenLijstResponse res = stub.getProductenLijst(gpl);
						System.out.println("Productenlijst ");
						for(Product p : res.get_return()){
							System.out.println("ID = " + p.getId());
							System.out.println("Prijs = " + p.getPrijs());
							System.out.println("Soort = " + p.getSoort());
							System.out.println("Beschrijving = " + p.getBeschrijving());
						}
						break;
					case 2 :
						System.out.println("Voer uw klantnaam in");
						input = readLine();
						nb.setKlantNaam(input);
						NieuweBestellingResponse res2 = stub.nieuweBestelling(nb);
						System.out.println("Uw bestellingnummer is : " + res2.get_return());
						System.out.println("Druk enter om door te gaan");
						break;
					case 3 :
						System.out.println("Voer uw klantnaam in");
						b.setKlantNaam(readLine());
						System.out.println("Uw bestellingnummer is : ");
						try {
							b.setBestellingId(Integer.parseInt(readLine()));
							System.out.println("Welke productcode wilt u bestellen");
							b.setProductId(Integer.parseInt(readLine()));
							System.out.println("Hoeveel producten wilt u bestellen");
							b.setAantal(Integer.parseInt(readLine()));
						} catch (NumberFormatException e) {
							System.out.println("Geen geldig getal");
						}
						BestelResponse res3 = stub.bestel(b);
						if(res3.get_return()){
							System.out.println("Uw bestelling is goed doorgevoerd");
						}
						else{
							System.out.println("Er is iets mis gegaan met de bestelling");
						}
						System.out.println("Druk enter om door te gaan");
						break;
					case 4 : 
						System.out.println("Voer de klantnaam in");
						gbo.setKlantNaam(readLine());
						System.out.println("Voer de bestellingnummer in : ");
						gbo.setBestellingId(Integer.parseInt(readLine()));
						GetBestelOverzichtResponse res4 = stub.getBestelOverzicht(gbo);
						double total = 0.0;
						for(BestellingProducten bps : res4.get_return()){
							System.out.println("Besteld product: " + bps.getProduct().getBeschrijving());
							System.out.println("Prijs product: " + bps.getProduct().getPrijs());
							System.out.println("Besteld aantal: " + bps.getAantal()); 
							total += bps.getAantal() * bps.getProduct().getPrijs();
						}
						System.out.println("___________");
						System.out.println("Totaal:" + total);
						System.out.println("Druk enter om door te gaan");
						break;
					case 5 :
						System.out.println("Voer de klantnaam in");
						bb.setKlantNaam(readLine());
						System.out.println("Voer het bestellingnummer in : ");
						bb.setBestellingId(Integer.parseInt(readLine()));
						BevestigBestellingResponse res5 = stub.bevestigBestelling(bb);
						if(res5.get_return()){
							System.out.println("De bestelling is bevestigd");
						}
						else{
							System.out.println("De bestelling is niet bevestigd, of de gegevens kloppen niet");
						}
						break;
					default : System.out.println("Geen geldig menuitem gekozen");
					System.out.println("Druk enter om door te gaan");
					break;
					}
				}
				catch(Exception e){
					System.out.println("Geen geldige input");
					System.out.println("Druk enter om door te gaan");
				}
				readLine();
				clearConsole();
				printMenu();
				input = readLine();
			}   
		} catch (AxisFault e) {
			e.printStackTrace();
		} catch (RemoteException e) {
			e.printStackTrace();
		}
	}


	public static void printMenu(){
		System.out.println("Kies 1 van de volgende opties");
		System.out.println("1. GetProductenLijst");
		System.out.println("2. NieuweBestelling");
		System.out.println("3. Bestel");
		System.out.println("4. GetBestelOverzicht");
		System.out.println("5. BevestigBestelling");
		System.out.println("Exit: exit");
	}

	public static String readLine()
	{
		String s = "";
		try {
			InputStreamReader converter = new InputStreamReader(System.in);
			BufferedReader in = new BufferedReader(converter);
			s = in.readLine();
		} catch (Exception e) {
			System.out.println("Error! Exception: "+e); 
		}
		return s;
	}

	public static void clearConsole() {
		for(int i = 0; i < 80 ; i++){
			System.out.println("");
		}
	}
}